import * as tf from '@tensorflow/tfjs'
import { print } from './until'

/**
 * 标量：scalar
 *
 * Rank维度
 */
// const scalar = tf.scalar(15)
// print('标量', scalar)

/**
 * 向量/矢量 Vector
 *
 * 形状（shape）各个维度的容量
 */
// const vector = tf.tensor1d([0, 1, 2, 3, 4, 5])
// print('矢量', vector)

/**
 * 矩阵就是二维
 *
 * 而多维度即为张量
 *
 */
// const matrix = tf.tensor2d([[10, 20, 30], [1, 2, 3]])
// print('矩阵', matrix)

// -------------------------------------------------------------------
/**
 * 运算
 *
 * 标量 & 张量 -》 张量中的每个元素与标量进行运算
 */
// const t = tf.tensor([[1, 2, 3], [10, 22, 33]])
// const s = tf.scalar(3)

// print('标量 & 张量运算', t.add(s))

/**
 * 张量 & 张量运算
 *
 * 1. 相同形状可以做加减
 * 2. m * n 与 n * k 点积为 m * k 张量
 */

// const tensor_1 = tf.tensor2d([
//   [1, 2, 3],
//   [2, 3, 4]
// ])
// const tensor_2 = tf.tensor2d([
//   [2, 4, 6],
//   [1, 5, 10]
// ])
// const tensor_2 = tf.tensor2d([
//   [2, 4],
//   [1, 5],
//   [2, 3]
// ])

// print('张量加运算', tensor_1.add(tensor_2))
// print('原始数据tensor_1', tensor_1)

/**
 * 张量的 点积
 */
// const tensor1 = tf.tensor2d([[1, 2], [3, 4]])
// const tensor2 = tf.tensor2d([[5, 6], [7, 8]])

// print('张量的点积', tensor1.matMul(tensor2))
// print('张量的点积', tensor_1.matMul(tensor_2))

/**
 * 矩阵置换
 */
// const a = tf.tensor2d([[1, 2], [3, 4], [5, 6]])
// print('矩阵置换', a.transpose())
// console.log(a.toString())

/**
 * 单位矩阵
 */
const identity = tf.oneHot(tf.tensor1d([0, 1, 2], 'int32'), 3, 5)
print('单位矩阵', identity)
